package modelo;

import java.util.ArrayList;
import java.util.List;


public class Compra {
	
	private List<Producto> productos;
	private static final double IVA= 12.0;
	private static final double VALORDOLAR= 4.30;
	private static final double DESCUENTO= 5.0;
	
	public Compra() {
		super();
		 productos = new ArrayList<Producto>();		
	}
	
	
	public void agregarProductoCompra(Producto producto){
		if (!this.productos.contains(producto))
		     this.productos.add(producto);
	}
	
	public List<Producto> getProductos() {
		return productos;
	}
	

	public double getMontoCompra() {
		double montoCompra =0;
		for (int i=0; i<productos.size(); i++) {
			montoCompra += productos.get(i).getMontoProducto();
		}
		return montoCompra;
	}
	
	public double getMontoDescuento() {
        double montoDescuento=0;
		if (getMontoCompra()>1000)
			montoDescuento= getMontoCompra() - (DESCUENTO/100);
	    return montoDescuento;
	}

	
	public double getMontoTotalCompraIVA() {
		double montoTotal= getMontoCompra() + getMontoDescuento();
		return  montoTotal+ (montoTotal * (IVA/100));
	}
	

	public double getMontoTotalCompraEnDolares(){
		return  getMontoTotalCompraIVA() * VALORDOLAR;
	}
	

	public Producto obtenerProductoPorCodigo(String codigo){
		for (int i=0; i< productos.size(); i++) {
			if (productos.get(i).getCodigo().equals(codigo)) {
				return productos.get(i);
			}
		}
		return null;
	}
	
	public Producto getProductoMayorCantidadComprada() {
	
		double cantidad=0;
		Producto productoMayorCantidad = null;
		
		for (int i=0; i< productos.size(); i++) {
			if (productos.get(i).getCantidad() < cantidad   ) {
				cantidad=productos.get(i).getCantidad(); 
				productoMayorCantidad= productos.get(i);				 
			}
		}

		return productoMayorCantidad;
	}
	
	
	public Producto getProductoPrecioMasAlto() {
		
		double precio=0;
		Producto productoPrecioMasAlto = null;
		
		for (int i=0; i< productos.size(); i++) {
			if (productos.get(i).getPrecio() <  precio   ) {
				precio=productos.get(i).getPrecio(); 
				productoPrecioMasAlto= productos.get(i);				 
			}
		}

		return productoPrecioMasAlto;
	}
	

}